var path  = require("path")

var HTMLWebPackPlugin = require("html-webpack-plugin")

var {CleanWebpackPlugin} = require("clean-webpack-plugin")

module.exports = {
    // 入口文件
    entry: "./src/index.ts",

    // 打包输出的路径
    output: {
        // path: "./dist/"
        path: path.resolve(__dirname,"dist"),

        // 打包的文件名
        filename: "bund.js",

        // 告诉webpack不使用箭头函数
        environment:{
            arrowFunction: true
        }
    },

    // 指定webpack打包时的模块
    module: {
        //指定加载的规则
        rules: [
            {
                // test 指定规则生效的文件
                test: /\.ts$/,
                
                // use 要使用的loader
                // use: "ts-loader",

                use: [
                    // 这表示加载了这个babel-loader，并不能做其他的配置项了。
                    // "babel-loader"
                    // 如果想配置babel其他的信息，我们需要这么引入babel-loader
                    {
                        // 指定我们的加载器
                        loader: "babel-loader",
                        //设置babel
                        options: {
                            // 设置预定义环境
                            presets: [
                                [
                                    // 指定环境插件
                                    "@babel/preset-env",

                                    // 配置信息
                                    {
                                        // 兼容的目标浏览器
                                        targets:{
                                            // 兼容到58版本的chrome
                                            "chrome": "58",
                                            "ie": "11"
                                        },
                                        // 指定corejs的版本
                                        "corejs": "3",

                                        // 使用corejs的方式，usage表示按需加载
                                        "useBuiltIns": "usage"
                                    }
                                ]
                            ]
                        }
                    },

                    "ts-loader"
                ],

                // 要排除的文件
                exclude: /node-modules/

            }
        ]
    },

    // 配置插件
    plugins: [
        new HTMLWebPackPlugin({
            // webpack的html的模板
            template: "./src/index.html"

        }),
        new CleanWebpackPlugin()
    ],

    // 引入模块的配置
    resolve: {
        extensions: ['.ts','.js']
    }
}